package net.oschina.arvin.dbjava.type;

import net.oschina.arvin.dbjava.model.Column;

/**
 * DB 类型转java类型
 *
 * @author Arvin
 * @time 2017/9/29 9:30
 */
public interface DBJavaTypeConverter {

    /**
     * 类型转换
     *
     * @param column                数据库列
     * @param toBoolForLenOneNumber 是否将长度为1的TINYINT和BIT转换成boolean
     * @param useUtilDate           使用java.util.Date
     * @param wrapMode              是否使用包装类，如int--> Integer (注意只有允许null的才会转换， 不允许null的会抛异常)
     * @return 如果不是符合的类型就返回null
     */
    Class<?> convertToJavaType(Column column, boolean toBoolForLenOneNumber, boolean useUtilDate, boolean wrapMode);

    /**
     * 转换成java类型
     *
     * @param javaType java类型
     * @return 返回大写格式的数据库类型
     */
    String convertToDBColumnType(Class<?> javaType);
}
